﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BLL;
using DevComponents.DotNetBar;

namespace GUI
{
    public partial class frmCamThi : DevComponents.DotNetBar.Office2007Form
    {
        private BOKy _ky;
        private BOMonHoc _monHoc;
        DataSet _ds = new DataSet();
        DataSet _dsMonHoc = new DataSet();
        private BOSinhVien _sinhvien;
        private BODiemDanh _diemdanh;
        public frmCamThi()
        {
            InitializeComponent();
        }

        private void frmCamThi_Load(object sender, EventArgs e)
        {
            _ky = new BOKy();
            _ds = _ky.Binding();
            cbxKy.DataSource = _ds.Tables[0];
            cbxKy.DisplayMember = "TenKy";
            cbxKy.ValueMember = "Ky";
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Dispose();
        }

        private void cbxKy_SelectedIndexChanged(object sender, EventArgs e)
        {
            int ky = cbxKy.SelectedIndex + 1; //Index bắt đầu từ 0, Ky bắt đầu từ 1 nên phải cộng 1 mới là mã kỳ
            _ds = _ky.GetLopByKy(ky);
            cbxLop.DataSource = _ds.Tables[0];
            cbxKy.DisplayMember = "TenLop";
            cbxLop.ValueMember = "TenLop";

            _ds = _ky.GetMonHocByKy(ky);
            cbxMonHoc.DataSource = _ds.Tables[0];
            cbxMonHoc.DisplayMember = "TenMonHoc";
            cbxMonHoc.ValueMember = "TenMonHoc";
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            dgvCamThi.Columns.Clear();
            _sinhvien = new BOSinhVien();
            _ds = _sinhvien.GetSVDiemDanh(cbxLop.SelectedValue.ToString());
            dgvCamThi.DataSource = _ds.Tables[0];

            //Thêm cột hiển thị số buổi đi học trên tổng số buổi
            DataGridViewTextBoxColumn diemdanhDataColumn = new DataGridViewTextBoxColumn();
            dgvCamThi.Columns.Insert(5, diemdanhDataColumn);
            dgvCamThi.Columns[0].HeaderText = "Tên SV";
            dgvCamThi.Columns[1].HeaderText = "Mã SV";
            dgvCamThi.Columns[2].HeaderText = "Ngày sinh";
            dgvCamThi.Columns[3].Visible = false;
            dgvCamThi.Columns[4].Visible = false;
            dgvCamThi.Columns[5].HeaderText = "Chuyên cần";

            //Thêm cột hiển thị số phần trăm đi học
            DataGridViewTextBoxColumn phantramDataColumn = new DataGridViewTextBoxColumn();
            dgvCamThi.Columns.Add(phantramDataColumn);
            dgvCamThi.Columns[6].HeaderText = "% đi học";

            dgvCamThi.Columns[0].Width = 222;

            //Lấy mã môn học của môn học được chọn
            _monHoc = new BOMonHoc();
            _dsMonHoc = _monHoc.LoadMaMonHoc(cbxMonHoc.SelectedValue.ToString());
            int maMonhoc = Convert.ToInt32(_dsMonHoc.Tables[0].Rows[0]["MaMonHoc"].ToString());

            //Lấy số buổi đi học của từng sinh viên có trong lớp
            //foreach(DataGridViewRow row in dgvCamThi.Rows)
            //{
                //int index = row.Index;
            for(int index = 0; index < dgvCamThi.Rows.Count; index++)
            {
                _diemdanh = new BODiemDanh();
                var maSV = dgvCamThi.Rows[index].Cells["MaSV"].Value.ToString();
                int buoiDiHoc = _diemdanh.GetBuoiDiHoc(maSV, maMonhoc);

                //Lấy số trình và tổng số buổi đi học của môn học
                string tenMonHoc = cbxMonHoc.SelectedValue.ToString();
                int soTrinh = _monHoc.GetSoTrinh(tenMonHoc);
                int tongSoBuoi = soTrinh * 3;

                //Gán giá trị cho cột Chuyên cần
                dgvCamThi.Rows[index].Cells[5].Value = (buoiDiHoc + "/" + tongSoBuoi);

                //Tính phần trăm đi học của từng sinh viên
                decimal percent = decimal.Divide(buoiDiHoc, tongSoBuoi);
                string phanTram = string.Format("{0:0.0%}", percent);
                dgvCamThi.Rows[index].Cells[6].Value = phanTram;

                //Đánh dấu những sinh viên không được thi
                if ((double)percent < 0.7)
                {
                    dgvCamThi.Rows[index].Cells[6].Style.BackColor = Color.Red;
                    dgvCamThi.Rows[index].Cells[6].Style.ForeColor = Color.White;
                }
                else
                    dgvCamThi.Rows[index].Cells[6].Style.BackColor = Color.White;
            }
        }
    }
}